home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-02 / finddrv.zip / FINDDRV.PAS < prev    next >
Pascal/Delphi Source File  |  1993-03-17  |  5KB  |  192 lines

  1. PROGRAM Find_Drive;
  2. USES DOS, CRT;
  3.  
  4. VAR
  5.   Found, Snd                                :BOOLEAN;
  6.   Code, X, Y                                :INTEGER;
  7.   Drive, S                                  :STRING;
  8.   Time2Hour, Time2Minute, Time2Second       :INTEGER;
  9.   Hour, Minute, Second, Sec100              :WORD;
  10.  
  11.  
  12. {
  13. Variable Descriptions ──────────────────────────────────────────────────────
  14.     Name         Type       Use
  15. ────────────────────────────────────────────────────────────────────────────
  16. Global Variables:
  17.     Found        Boolean    Has drive been found or not.
  18.     Snd          Boolean    Will sound be played or not.
  19.     Code         Integer    Return error Code when converting command line.
  20.                             time to an integer.
  21.     x            Integer    Screen Location.
  22.     y            Integer    Screen Location.
  23.     Drive        String     Drive to locate (Network or Floppy).
  24.     s            String     Temporary variable for Sound parameter.
  25.     Time2Hour    Integer    Hour to quit checking.
  26.     Time2Minute  Integer    Minute to quit checking.
  27.     Time2Second  Integer    Second to quit checking.
  28.     Hour         Word       System hour.
  29.     Minute       Word       System minute.
  30.     Second       Word       System second.
  31.     Sec100       Word       System 100th's of a second.
  32.  
  33. Is_It_There Function:
  34.     Drive        Sting      Passed parameter - Drive to locate
  35.     Info         SearchRec  System Variable
  36.  
  37. PlaySound Procedure:
  38.     N,M          Integer    Loop Counters
  39.  
  40. ════════════════════════════════════════════════════════════════════════════
  41. }
  42.  
  43.  
  44.  
  45. {Play a quick tune so that the user knows the status of the drive}
  46. PROCEDURE PlaySound;
  47. VAR
  48.  N, M    :INTEGER;
  49.  
  50. BEGIN
  51.   IF Found=TRUE THEN
  52.   BEGIN
  53.     FOR M:=1 TO 3 DO
  54.     FOR N:=( (M*4) DIV 2) TO (M*4) DO
  55.     BEGIN
  56.       SOUND(N*300);
  57.       DELAY(50);
  58.     END;
  59.     NOSOUND;
  60.   END
  61.   ELSE
  62.   BEGIN
  63.     SOUND(100);
  64.     DELAY(300);
  65.     NOSOUND;
  66.     DELAY(300);
  67.     SOUND(100);
  68.     DELAY(300);
  69.     NOSOUND;
  70.   END;
  71. END;
  72.  
  73.  
  74.  
  75. {Check to see if something exists on the target drive}
  76. {Return True if something exists}
  77. FUNCTION Is_It_There(VAR Drive   :STRING) : BOOLEAN;
  78.  
  79. VAR
  80.   Info      :SearchRec;
  81.  
  82. BEGIN
  83.   FINDFIRST(Drive+'*.*',$3F,Info);
  84.   IF DosError = 0 THEN
  85.     Is_It_There:=True
  86.   ELSE
  87.     Is_It_There:=False;
  88. END;
  89.  
  90.  
  91.  
  92. {********Main Line*******}
  93. BEGIN
  94.   IF ( (ParamCount=0) OR (LENGTH(ParamStr(1)) > 2) ) THEN
  95.   BEGIN            {Instructions to user}
  96.     CLRSCR;
  97.     WRITE('Usage: ');
  98.     HIGHVIDEO;
  99.     WRITELN('FINDDRV <d:> [Time] [Sound]              (C) 1993 by Strike Development');
  100.     normvideo;
  101.     WRITELN('Where │ <d:>    is drive to find/wait for.');
  102.     WRITELN('      │ [Time]  is the amount of time to wait in Seconds.');
  103.     WRITELN('      │           - Default time is immediate.');
  104.     WRITELN('      │           - 0 waits for a key to be pressed.');
  105.     WRITELN('      │ [Sound] S,s will cause FINDDRV to play a tone based on');
  106.     WRITELN('      │         if the drive is found or not.');
  107.     WRITELN;
  108.     WRITELN('FINDDRV will return a DOS ERRORLEVEL of 100 if no drive is found,');
  109.     WRITELN('        or an error occurs.');
  110.     WRITELN;
  111.     WRITELN('Error: Drive not specified.');
  112.     HALT(100);
  113.   END;
  114.  
  115.   {Initialize the variables}
  116.   Time2Second:=1;
  117.   Time2Minute:=0;
  118.   Time2Hour:=0;
  119.  
  120.   {Get Command line variables}
  121.   Drive:=COPY(ParamStr(1),1,2);
  122.   Drive[1]:=UPCASE(Drive[1]);
  123.   IF Length(Drive)=1 THEN
  124.     Drive:=Drive+':';
  125.  
  126.   IF ParamCount > 1 THEN  {If a second parameter is passed, override default}
  127.     VAL(ParamStr(2),Time2Second,Code);
  128.   IF Code <> 0 THEN       {Bad time passed}
  129.   BEGIN
  130.     WRITELN('FINDDRV Error: Invalid time specified');
  131.     HALT(100);
  132.   END;
  133.  
  134.   IF ParamCount > 2 THEN {Get the Sound parameter}
  135.     S := ParamStr(3);
  136.     S[1] := UPCASE(S[1]);
  137.     Snd := S='S';
  138.  
  139.   {Get the system time and compute the waiting time}
  140.   GETTIME(Hour,Minute,Second,Sec100);
  141.   IF Time2Second = 0 THEN
  142.     Time2Second:=61
  143.   ELSE
  144.   BEGIN
  145.     Time2Second := Second + Time2Second;
  146.  
  147.     {Seconds boundry check}
  148.     WHILE Time2Second > 59 DO
  149.     BEGIN
  150.       Time2Second := Time2Second - 59;
  151.       Time2Minute := Time2Minute + 1;
  152.     END;
  153.  
  154.     {Minutes boundry check}
  155.     Time2Minute:=Time2Minute+Minute;
  156.     WHILE Time2Minute > 59 DO
  157.     BEGIN
  158.       Time2Minute:= Time2Minute - 59;
  159.       Time2Hour:= Time2Hour + 1;
  160.     END;
  161.  
  162.     {Hours boundry check}
  163.     Time2Hour:=Time2Hour+Hour;
  164.     IF Time2Hour > 24 THEN
  165.       Time2Hour:= Time2Hour - 24;
  166.   END;
  167.  
  168.   {Remember current screen position}
  169.   X:=WHEREX;
  170.   Y:=WHEREY;
  171.  
  172.   WRITE('Searching for Drive ',Drive);
  173.   REPEAT
  174.     Found := Is_It_There(Drive);
  175.     GETTIME(Hour,Minute,Second,Sec100);
  176.   UNTIL ( (Found) or
  177.           (Keypressed) or
  178.           (Hour >= Time2Hour) and (Minute >= Time2Minute) and (Second >= Time2Second) ) ;
  179.  
  180.   GOTOXY(X,Y);
  181.   IF Found THEN
  182.   BEGIN
  183.     WRITELN('Drive ',Drive,' found!            ');
  184.     IF Snd THEN PlaySound;
  185.   END
  186.   ELSE
  187.   BEGIN
  188.     WRITELN('Drive ',Drive,' was not found!    ');
  189.     IF Snd THEN PlaySound;
  190.     HALT(100);
  191.   END
  192. END.